package com.peng.mapper;

import com.peng.pojo.Article;
import com.peng.pojo.ArticleType;
import com.peng.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface ArticleMapper {
    /**
     * 查询所有托福人文章信息
     *
     * @param title       标题
     * @param publisherId 发布人ID
     * @param typeId      分类ID
     * @return
     */
    List<Article> selectAll(@Param("title") String title,
                            @Param("publisherId") Integer publisherId, @Param("typeId") Integer typeId);

    //通过ID查询发布人真实姓名
    @Select("select real_name from tb_user where id = #{id}")
    User selectUserById(int id);

    //通过ID 查询分类姓名
    @Select("select * from tb_article_type where id = #{id}")
    ArticleType selectTypeById(int id);

    /**
     * 修改文章状态
     *
     * @param status 1为正常 2禁毒 3 为假删
     * @param id
     * @return
     */
    int updateArticleStatus(@Param("status") int status, @Param("id") Integer... id);

    //查询所有教师，
    @Select("select id,real_name from tb_user where role_id = 2")
    List<User> selectAllUser();

    //查询所有课程分类信息
    @Select("select * from tb_article_type")
    List<ArticleType> selectAllArticleType();

    @Select("select count(*) from tb_article_collect where article_id = #{articleId}")
    int selectArticleCollect(int articleId);

    /**
     * 查询轮播文章列表
     *
     * @return
     */
    @Select("select * from tb_article where status = 4")
    List<Article> selectBroadcastingArticle();

    /**
     * 查询最新文章列表
     *
     * @return
     */
    @Select("select * from tb_article GROUP BY release_date desc limit 5")
    List<Article> selectArticleByTimeDesc();

    //查询课程分类以及分类下相应的课程信息
    List<ArticleType> selectArticleTypeAndArticle();

    /**
     * 通过课程类型查询文章列表 前6个
     *
     * @param typeId
     * @return
     */
    @Select("select id,title from tb_article where type_id = #{typeId} limit 6")
    List<Article> selectArticleByTypeIdLimit6(int typeId);

    /**
     * 通过课程类型查询文章列表
     *
     * @param typeId
     * @return
     */
    List<Article> selectArticleByTypeId(int typeId);
}
